import axios from 'axios'
import qs from 'qs'
import { Loading, MessageBox } from 'element-ui'

// import store from '@/store'
import global_ from './base.js'
// import { getToken, setToken } from '@/utils/auth'
// 1.创建axios的实例
const instance = axios.create({
  baseURL: global_.BASE_URL,
  timeout: 30000,
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
  }
})
// 配置通用请求动画
let loading = null

// 2.axios拦截器
// 请求拦截 instance.interceptors.request.use()
instance.interceptors.request.use(

  config => {
    // config.headers.Authorization = getToken()// window.sessionStorage.getItem('token') // 必须在请求头中使用 `Authorization` 字段提供 `token` 令牌
    config.data = qs.stringify(config.data) // 转为formdata数据格式
    loading = Loading.service({
      lock: true,
      text: '加载中...',
      background: 'rgba(255, 255, 255, 0)'
    })
    return config
  },
  err => {
    console.log(err)
    loading.close() // 关闭请求动画
    return Promise.reject(err)
  }
)
// 响应拦截
instance.interceptors.response.use(async (response) => {
  // 前端拦截登录状态

  // console.log('response.code=', response.data.code)
  // console.log('response.headers=', response.headers)
  if (response && response.data) {
    // 获取服务器的响应头 更新token
    // if (response.headers.authorization) {
    //   var authorization = response.headers.authorization
    //   setToken(authorization)
    // }

    switch (Number(response.data.code)) {
      case 0: // 登录失败
      // data = response.data
        break
      case 200: // 正常
        // data = response.data
        break
      case 401: // token过期

        break
      case 403: // 无权限

        break
      default:
        // Message.error({
        //   message: response.data.msg
        // })
        // router.push('/login')
        break
    }
  }
  loading.close() // 关闭请求动画
  return response
}, err => {
  loading.close() // 关闭请求动画
  if (err.response) {
    // switch (err.response.status) {
    //   case 401:
    //     // 401 清除token信息并跳转到登录页面
    //     console.log('401')
    //     MessageBox.confirm('对不起，您无权访问该页面，是否重新登陆？', '重新登录', {
    //       confirmButtonText: '确定',
    //       cancelButtonText: '取消',
    //       type: 'warning'
    //     }).then(() => {
    //       store.dispatch('user/resetToken').then(() => {
    //         location.reload()
    //       })
    //     })
    // }
  }

  return Promise.resolve(err.response)
})
/**
 * get方法，对应get请求
 * @param {String} url [请求的url地址]
 * @param {Object} params [请求时携带的参数]
 */
export function get (url, params) {
  return new Promise((resolve, reject) => {
    instance.get(url, {
      params: params
    }).then(response => {
      resolve(response.data)
    }).catch(err => {
      reject(err.data)
    })
  })
}

/**
* post方法，对应post请求
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
*/
export function post (url, data = {}) {
  // console.log(data)
  return new Promise((resolve, reject) => {
    instance.post(url, data)
      .then(response => {
        resolve(response)
      })
      .catch(err => {
        reject(err)
      })
  })
}
/**
* postblob方法，对应postblob请求
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
*/
export function postblob (url, data = {}) {
  return new Promise((resolve, reject) => {
    instance.post(url, data, { responseType: 'blob' })
      .then(response => {
        resolve(response)
      })
      .catch(err => {
        reject(err)
      })
  })
}
